package likouJava;
import java.util.*;

class Carby {
    /**
     * 计算数组中的众数（出现次数最多的数字）
     * 如果有多个数字出现次数相同，则返回其中最小的数字
     * 
     * @param a 输入的整数列表
     * @return 出现次数最多的最小数字
     */
    public int getMode(ArrayList<Integer> a) {
        // 使用HashMap统计每个数字的出现次数
        Map<Integer, Integer> countMap = new HashMap<>();
        for (Integer num : a) {
            countMap.put(num, countMap.getOrDefault(num, 0) + 1);
        }
        
        // 遍历统计结果，找出出现次数最多的数字
        // 如果出现次数相同，选择数值较小的
        int maxCount = 0;
        int mode = Integer.MAX_VALUE;
        for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
            int num = entry.getKey();
            int count = entry.getValue();
            if (count > maxCount) {
                maxCount = count;
                mode = num;
            } else if (count == maxCount && num < mode) {
                mode = num;
            }
        }
        return mode;
    }
}